package ace.cmp.spring.data.jdbc.querydsl.core.util;

import java.lang.reflect.Field;
import java.util.Map;
import java.util.Set;

/**
 * @author caspar
 * @date 2023/8/25 9:51
 */
public interface QuerydslAnnotationUtils {
  /**
   * 设置所有被框架注解的字段的值为null
   *
   * @param entity 实体
   */
  void setAllFrameworkAnnotationExceptIdFieldToNull(Object entity);

  /**
   * 获取所有被框架注解的字段名
   *
   * @param entityType 实体类型
   * @return 所有被框架注解的字段名, 可空
   */
  Set<Field> getAllFieldByFrameworkAnnotation(Class entityType);

  /**
   * 获取所有被框架注解的字段名
   *
   * @param entityType 实体类型
   * @return key-field.getName 所有被框架注解的字段名, 可空
   */
  Map<String, Field> getAllFieldByFrameworkAnnotationMap(Class entityType);
}
